#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *
pygame.init()

main = {}					# Todo esta dividido en diferentes diccionarios segun corresponda.
main["general"] = {}
main["general"]["config"] = {}
main["general"]["cursor"] = {}
main["graficos"] = {}
main["graficos"]["fuente"] = {}
main["graficos"]["boton"] = {}
main["ventana"] = {}
main["ventana"]["pulsar"] = {}
main["ventana"]["pulsar"]["click"] = {}
main["ventana"]["undo"] = {}
main["ventana"]["undo2"] = {}
main["jugador"] = {}
main["mapa"] = {}
main["camara"] = {}

# Carga la configuracion previa

config_cfg = open("config.cfg", "r") 	# Abre el archivo config.cfg y carga la configuracion que haya adentro (resolucion y pantalla completa)
config_lineas = config_cfg.readlines()
config_cfg.close()
for linea in config_lineas:
	linea = linea.split("=")
	if linea[1]:
		try:
			main["general"][linea[0]] = int(linea[1])
		except:
			main["general"][linea[0]] = linea[1]
		main["general"]["config"][linea[0]] = linea[1]
main["general"]["resolucion"] = main["general"]["resolucion"].split("x")
main["general"]["resolucion"][0] = int(main["general"]["resolucion"][0])
main["general"]["resolucion"][1] = int(main["general"]["resolucion"][1])

# General

pygame.mouse.set_visible(False)		# Esconde el mouse, la ventana cursor imprime una imagen en su lugar

main["general"]["fps"] = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]	# Lista para promediar fps
main["general"]["evento"] = pygame.event.poll()											# Objeto donde van los eventos.
if not main["general"]["resolucion"] : main["general"]["resolucion"] = (1024,768)	# Si no se leyo la configuracion, setea la resolucion y pantalla completa
if not main["general"]["fullscreen"] : main["general"]["fullscreen"] = 0
if main["general"]["fullscreen"]:													# Crea la ventana segun se pida fullscreen o no
	main["general"]["pantalla"] = pygame.display.set_mode(main["general"]["resolucion"],pygame.FULLSCREEN)
else:
	main["general"]["pantalla"] = pygame.display.set_mode(main["general"]["resolucion"])
main["general"]["rect"] = main["general"]["pantalla"].get_rect()					# Objeto rect de la pantalla
main["general"]["cursor"]["img"] = pygame.image.load('recursos/img/ui/cursor.png').convert_alpha()	# Imagen del cursor
main["general"]["cursor"]["coords"] = (16,21)		# Punto de anclaje de la img del cursor

# Graficos

main["graficos"]["fuente"]["20"] = pygame.font.Font("data/zombie.ttf", 20)		# Fuente que se va a usar
main["graficos"]["boton"]["normal"] = pygame.image.load('recursos/img/menu/boton1.png').convert_alpha()		# Botonespara los menues
main["graficos"]["boton"]["seleccionado"] = pygame.image.load('recursos/img/menu/boton3.png').convert_alpha()
main["graficos"]["boton"]["presionado"] = pygame.image.load('recursos/img/menu/boton2.png').convert_alpha()

# Ventana

main["ventana"]["reinicio"] = False			# Aca se agregan las ventanas a las colas
main["ventana"]["crear"] = []
main["ventana"]["borrar"] = []
main["ventana"]["seleccionar"] = []
main["ventana"]["deseleccionar"] = []
main["ventana"]["pulsar"]["click"]["posicion"] = (0,0)
main["ventana"]["pulsar"]["tecla"] = pygame.key.get_pressed()
main["ventana"]["undo"]["crear"] = []		# Listas para deshacer cambios en las ventanas
main["ventana"]["undo"]["borrar"] = []
main["ventana"]["undo"]["seleccionar"] = []
main["ventana"]["undo"]["deseleccionar"] = []
main["ventana"]["undo2"]["crear"] = []
main["ventana"]["undo2"]["borrar"] = []
main["ventana"]["undo2"]["seleccionar"] = []
main["ventana"]["undo2"]["deseleccionar"] = []

# Jugador, las variables se cargan en la ventana "cargar"

main["jugador"]["nombre"] = ""		# Variables del pj
main["jugador"]["lvl"] = 0
main["jugador"]["exp"] = 0

# Mapa

main["mapa"]["enable"] = False		# Generar o no el mapa
main["mapa"]["posicion"] = [0,0]		# Posicion del pj
main["mapa"]["mapa"] = [0,0]			# idem
main["mapa"]["mapas"] = {}			# Diccionario donde se van a cargar los mapas de 32x32
main["mapa"]["tile_altura"] = main["general"]["resolucion"][1]/32	# Altura de los tiles segun la pantalla
main["mapa"]["tiles"] = {}			# Diccionario con las imagenes de los tiles

# Camara

main["camara"]["mapa"] = [0,0]			# Propiedades de la camara, por ahora coinciden con las del pj
main["camara"]["posicion"] = [0,0]
main["camara"]["velocidad"] = [0,0]
